//
// Created by Win on 2016/12/29.
//

#ifndef __HTTP_BODYDATA_DETECT_H_
#define __HTTP_BODYDATA_DETECT_H_

#include "../comm/http_basedata.h"

#define HTTP_BODYTYPE_MATCHED                   0
#define HTTP_BODYTYPE_UNMATCHED                 1
#define HTTP_BODYTYPE_UNKNOW                    2

#define HTTP_EXTEND_DONE_SUCC                   0
#define HTTP_EXTEND_DONE_FAIL                   1
#define HTTP_EXTEND_UNDONE                      2

/*!
 * \brief http body体判断
 *
 * \arg p_comm_session          HTTP相关信息
 *      p_tcp_body              数据内容
 *      ui_tcp_body_len         数据长度
 *
 * \return                      FR_SUCC:成功
 *                              FR_FAIL:失败
 */
int http_bodydata_type_detect(Http_comm_session *p_comm_session, char *p_tcp_body, unsigned int ui_tcp_body_len);

/*!
 * \brief           HTTP 之上的协议解码
 *
 * \arg             p_packet    (数据内容)
 *                  p_comm_session （http 信息）
 *                  p_st_body_data  （上报数据收集链表）
 *                  i_use_request    （是否使用request）
 *
 * \return          HTTP_EXTEND_DONE_SUCC:解码完成
 *                  HTTP_EXTEND_DONE_FAIL:解码失败
 *                  HTTP_EXTEND_UNDONE:不是扩展协议
 */
int frhttp_extend_bodydata_deal(Frbyte_Packet *p_packet, Http_comm_session *p_comm_session, Frreport_body_data *p_st_body_data, int i_use_request);

/*!
 * \brief           判断HTTP BODY CHUNKED传输的时候 是否有协议扩展
 *
 * \arg             p_comm_session （http 信息）
 *
 * \return          FR_YES:有协议扩展
 *                  FR_NO:没有协议扩展
 *
 */
int frhttp_body_extended(Http_comm_session *p_comm_session);
#endif //__HTTP_BODYDATA_DETECT_H_
